解题思路
一个数 n 是 2 的幂,当且仅当 n 是正整数,并且 n 的二进制表示中仅包含 1 个 1。
因此我们可以考虑使用位运算,将 n 的二进制表示中最低位的那个 1 提取出来,再判断剩余的数值是否为 0 即可。下面介绍两种常见的与「二进制表示中最低位」相关的位运算技巧。
代码实现
javascript
/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfTwo = function (n) {
return n > 0 && (n & (n - 1)) === 0
}
暴力解法
javascript
/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfTwo = function (n) {
for (let i = 0; i < 32; i++) {
if (2 ** i === n) {
return true
}
}
return false
}